using Infrastructure.Attribute;
using ZR.Model.System;
using ZR.Model.System.Dto;
using ZR.Repository;
using ZR.Service.System;

namespace ZR.Service.System
{
    /// <summary>
    /// 报警配置Service业务层处理
    /// </summary>
    [AppService(ServiceType = typeof(IConfigService), ServiceLifetime = LifeTime.Transient)]
    public class ConfigService : BaseService<Config>, IConfigService
    {
        /// <summary>
        /// 获取配置信息（只有一条记录）
        /// </summary>
        /// <returns></returns>
        public Config GetConfig()
        {
            var response = Queryable()
                .First();

            return response;
        }

        /// <summary>
        /// 更新配置信息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public int UpdateConfig(Config model)
        {
            return Update(model, false, "修改报警配置");
        }

        /// <summary>
        /// 初始化配置（如果不存在则创建）
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public Config InitConfig(Config model)
        {
            var existingConfig = GetConfig();
            if (existingConfig == null)
            {
                // 如果不存在配置，则创建
                return Insertable(model).ExecuteReturnEntity();
            }
            else
            {
                // 如果存在配置，则更新
                model.Id = existingConfig.Id;
                UpdateConfig(model);
                return model;
            }
        }
    }
}

